Использовавшийся в предыдущем примере
режим называют соединенным. Программа
соединяется с базой данных, выполняет все
необходимые действия, а затем
отсоединяется. При этом перемещаться по
данным базы можно только в одном
направлении. Это соответствует
однонаправленному курсору/набору записей в
классической технологии доступа к данным ADO.
При использовании соединенного режима
следует открывать и закрывать соединение
явно.
Держать соединение постоянно открытым —
не лучший способ работы, если вы хотите
"Provider=SQLOLEDB.1;server=localhost;uid=sa;pwd=;
database=Northwind";
В приведенной строке следует изменить на
корректные имя сервера, идентификатор и
пароль пользователя.
Как уже было сказано, SqlCommand применяется
для выполнения команд при использовании и
DataSet (Набор данных) и SqlDataReader, только
действует немного по-разному. Это станет
более понятным после рассмотрения класса
SqlDataAdapter.
Свойство CommandType определяет тип команды,
хранимой в SqlCommand. Для источника данных Sql
это может быть Text (Текст) (принятое по
умолчанию значение) или StoredProcedure (Хранимая
процедура). CommandText также можно определить
как свойство. Вскоре мы научимся
использовать параметры при работе с
командами, которые передаются базе данных.
Экземпляр класса SqlDataReader возвращается посредством метода Ехе-cuteReader
экземпляра класса SqlCommand. Если программа должна быть независима от используемого
источника данных, вместо указанного метода следует использовать интерфейс IDataReader.
При этом можно вызывать методы интерфейса, а не самого экземпляра класса.
IDataReader *idr = command->ExecuteReader() ;
Этот же прием можно использовать и для других классов источника данных, где реализованы интерфейсы, которые поддерживаются несколькими источниками данных. Пока экземпляр класса SqlDataReader не будет закрыт, никакие действия над объектом SqlCommand, кроме его закрытия, недоступны.